The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
Client-server computer systems are a pervasive form of distributed computing architecture. Client-server systems often employ a database for storing and retrieving data. A typical database is an organized collection of related data stored as “records” having “fields” of data. In a typical client-server system employing a database, client computing devices (clients) request services of server computing devices (servers) over a data network and servers modify and retrieve database data as part of servicing requests from clients.
As an intermediary between clients and the database, servers allow multiple clients to modify and retrieve database data concurrently while at the same time providing a consistent view of database data to all clients. Sharing new information between clients is a matter updating data in the database so that clients can retrieve the new information from the database. In essence, the database is the centralized and authoritative repository of information and the servers act as gatekeepers of the information through which all requests from clients to modify and retrieve the information must pass.
Typical client-server database systems are useful to users so long as the network connecting the clients to the servers is highly reliable. In these systems, servers execute much of the logic for modifying and retrieving database data and clients repeatedly request servers over a network to perform various data selection and manipulation functions. Thus, if the network between clients and servers is only periodically available, is completely unavailable, or is non-existent, then users of the clients cannot practically conduct an analysis on database data. However, some users (e.g., in-field or forward operating personnel) may wish to perform analysis on database data in locations where a network connecting clients and servers is only periodically available, is unreliable, or does not exist. In addition, these disconnected users may need to update database data at their remote location and incorporate their updates back into the central authoritative repository of database data shared with other users, all without any network access to the central authoritative repository. For these “disconnected” users, typical client-server database systems requiring a highly-available network connection are not adequate.